package com.xy.api.service.mainData;

import com.xy.api.model.dto.mainData.ProductDTO;
import com.xy.api.model.dto.mainData.ProductTreeNodeDTO;
import com.xy.api.model.request.mainData.ProductRequest;
import com.xy.api.model.request.mainData.VendorProductRequest;
import com.xy.api.model.response.Rows;

import java.util.List;

public interface IProductService {

    /**
     * 产品列表查询
     *
     * @param request
     * @return
     */
    Rows<ProductDTO> queryProductList(ProductRequest request);

    /**
     * 查询供应商下的产品
     *
     * @param request
     * @return
     */
    Rows<ProductDTO> queryVendorProductList(VendorProductRequest request);

    /**
     * 查询所有的产品
     *
     * @return
     */
    Rows<ProductDTO> queryAllProductList();

    /**
     * 查询产品详情
     *
     * @param id
     */
    ProductDTO queryProductDetail(Long id);

    /**
     * 编辑产品(支持新增)
     *
     * @param request
     */
    void editProduct(ProductDTO request);

    /**
     * 删除产品
     *
     * @param id
     */
    void deleteProduct(Long id);

    /**
     * 根据ID查询
     *
     * @param ids
     * @return
     */
    List<ProductDTO> queryProductByIds(List<Long> ids);

    /**
     * 根据供应商ID及供应商产品类型ID查询其旗下的产品
     *
     * @param vendorId            供应商ID
     * @param vendorProductTypeId 供应商产品类型ID
     * @return
     */
    List<ProductTreeNodeDTO> queryProductTree(Long vendorId, Long vendorProductTypeId);
}
